package com.sale.table.mapper;

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sale.common.mybatis.core.page.TableDataInfo;
import com.sale.table.domain.dto.SaleOrderTraceDto;
import com.sale.table.domain.dto.SalesCollectionDto;
import com.sale.table.domain.dto.SalesRankingDto;
import com.sale.table.domain.dto.SalesTotalDto;
import com.sale.table.domain.vo.SaleOrderTraceVo;
import com.sale.table.domain.vo.SalesTotalVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 销售统计报表 mapper
 */
public interface SaleOrderStatisticsMapper {


    /**
     * 销售订单跟踪 列表
     * @param
     */
    List<SaleOrderTraceDto> getSaleOrderTraceList(@Param("saleOrderTraceVo") SaleOrderTraceVo saleOrderTraceVo);

    /**
     * 销售收款一览表列表(销售发货)
     */
    List<SalesCollectionDto> getSalesCollectionList(@Param("saleOrderTraceVo") SaleOrderTraceVo saleOrderTraceVo);

    /**
     * 销售收款一览表列表(销售退货)
     */
    List<SalesCollectionDto> getSalesReturnList(@Param("saleOrderTraceVo") SaleOrderTraceVo saleOrderTraceVo);

    /**
     * 销售汇总表（物料统计）
     */
    List<SalesTotalDto> getSalesTotalList(@Param("salesTotalVo") SalesTotalVo salesTotalVo);

    /**
     * 销售汇总表（客户统计）
     */
    List<SalesTotalDto> getSalesTotalCustomerList(@Param("salesTotalVo") SalesTotalVo salesTotalVo);

    /**
     * 销售排行表(物料统计)
     */
    Page<SalesRankingDto> getSalesRankingMaterialList(@Param("salesTotalVo") SalesTotalVo salesTotalVo, @Param("page") Page<SalesRankingDto> page);

    /**
     * 销售排行表(客户统计)
     */
    @InterceptorIgnore(tenantLine = "true")
    Page<SalesRankingDto> getSalesRankingCustomerList(@Param("salesTotalVo") SalesTotalVo salesTotalVo, @Param("page") Page<SalesRankingDto> page);
}
